package com.cjq.constant;

import lombok.Getter;

/**
 * ContentType枚举类
 * 用于定义文件扩展名与MIME类型的映射关系
 */
@Getter
public enum ContentType {
    DEFAULT("default","application/octet-stream"),
    JPG(".jpg", "image/jpeg"),
    GIF(".gif", "image/gif"),
    JFIF(".jfif", "image/jpeg"),
    PNG(".png", "image/png"),
    JPEG(".jpeg", "image/jpeg"),
    JPE(".jpe", "image/jpeg"),
    MP4(".mp4", "video/mp4"),
    HTML(".html","text/html"),
    CSS(".css","text/css"),
    JS(".js","text/javascript");

    private final String extension;
    private final String type;
    /**
     * 构造函数，初始化扩展名和MIME类型
     * @param extension 文件扩展名
     * @param type MIME类型
     */
    ContentType(String extension, String type){
        this.extension = extension;
        this.type = type;
    }

    /**
     * 根据文件名获取对应的MIME类型
     * @param fileName 文件名
     * @return 对应的MIME类型，如果未找到匹配项则返回默认类型
     */
    public static ContentType getContentType(String fileName) {
        // 处理空扩展名的情况，返回默认类型
        if (fileName == null || fileName.isEmpty()) {
            return DEFAULT;
        }
        String s = fileName.substring(fileName.lastIndexOf("."));
        // 遍历所有ContentType枚举值，查找匹配的扩展名
        for (ContentType contentType : ContentType.values()) {
            if (s.equalsIgnoreCase(contentType.getExtension())) {
                return contentType;
            }
        }
        // 未找到匹配项，返回默认类型
        return DEFAULT;
    }
}
